#include<bits/stdc++.h>
using namespace std;

struct node
{
	int x, y, step;
};

int dx[] = {1, 0};
int dy[] = {0, 1};
bool vis[1001][1001];
int n, flag;
map<int, map<int, int>> stone;

//queue<node> q;
//
//void bfs()
//{
//	q.push({1, 1, 0});
//	while(!q.empty())
//	{
//		node t = q.front();
//		q.pop();
//		for(int i = 0;i < 2;i++)
//		{
//			int xx = t.x+dx[i];
//			int yy = t.y+dy[i];
//			if(xx > 0 && yy > 0 && xx <= n && yy <= n && (stone[xx][yy] == 0 || stone[xx][yy] >= t.step+1))
//			{
//				q.push({xx, yy, t.step+1});
//				if(xx == n && yy == n)
//				{
//					cout<<"Yes"<<endl;
//					return ;
//				}
//			}	
//		}
//	}
//	cout<<"No"<<endl;
//}

void dfs(int x, int y, int step)
{
	if(x >= n && y >= n)
	{
		flag = 1;
		return ;
	}
	for(int i = 0;i < 2;i++)
	{
		int xx = x+dx[i];
		int yy = y+dy[i];
		if(!vis[xx][yy] && xx > 0 && yy > 0 && xx <= n && yy <= n && (stone[xx][yy] == 0 || stone[xx][yy] >= step+1))
		{
			vis[xx][yy] = 1;
			dfs(xx, yy, step+1);
			vis[xx][yy] = 0;
		}
	}
}

int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		flag = 0;
		memset(vis, 0, sizeof vis);
		stone.clear();
		cin>>n;
		int x, y;
		for(int i = 1;i <= 2*n-2;i++)
		{
			cin>>x>>y;
			stone[x][y] = i;
		}
		//bfs
//		bfs();
		// dfs
		dfs(1, 1, 0);
		if(flag)
			cout<<"Yes"<<endl;
		else
			cout<<"No"<<endl;
	}
	return 0;
}

